package models

import (
	"time"
)

// TradingAccount 交易账户模型
type TradingAccount struct {
	Id        int64     `xorm:"" json:"id"`                                     // 账户ID
	UserId    int64     `xorm:"user_id notnull" json:"userId"`                  // 用户ID
	Name      string    `xorm:"name varchar(20) notnull" json:"name"`           // 账户名称
	IsDefault bool      `xorm:"is_default default false" json:"isDefault"`      // 是否默认账户
	Remark    string    `xorm:"remark varchar(20)" json:"remark"`               // 备注
	CreatedAt time.Time `xorm:"created datetime 'created_at'" json:"createdAt"` // 创建时间
	UpdatedAt time.Time `xorm:"updated datetime 'updated_at'" json:"updatedAt"` // 更新时间
	DeletedAt time.Time `xorm:"deleted datetime 'deleted_at'" json:"-"`         // 删除时间(软删除)
}

func (TradingAccount) TableName() string {
	return "note_trading_account"
}

// Stock Stock模型
type Stock struct {
	Id               int64     `xorm:"" json:"id"`                                         // StockID
	TradingAccountId int64     `xorm:"trading_account_id notnull" json:"tradingAccountId"` // 所属交易账户ID
	Name             string    `xorm:"name varchar(10) notnull" json:"name"`               // Stock名称
	Code             string    `xorm:"code varchar(10) notnull" json:"code"`               // Stock代码
	Exchange         string    `xorm:"exchange varchar(5)" json:"exchange"`                // 交易所代码
	CreatedAt        time.Time `xorm:"created datetime 'created_at'" json:"createdAt"`     // 创建时间
	UpdatedAt        time.Time `xorm:"updated datetime 'updated_at'" json:"updatedAt"`     // 更新时间
	DeletedAt        time.Time `xorm:"deleted datetime 'deleted_at'" json:"-"`             // 删除时间(软删除)
}

func (Stock) TableName() string {
	return "note_stock"
}

// TransactionPlan 交易计划模型
type TransactionPlan struct {
	Id                int64     `xorm:"" json:"id"`                                         // 计划ID
	TradingAccountId  int64     `xorm:"trading_account_id notnull" json:"tradingAccountId"` // 所属交易账户ID
	StockId           int64     `xorm:"stock_id notnull" json:"stockId"`                    // 关联StockID
	Title             string    `xorm:"title notnull" json:"title"`                         // 计划标题
	Name              string    `xorm:"name varchar(10) notnull" json:"name"`               // Stock名称 冗余字段
	Code              string    `xorm:"code varchar(10) notnull" json:"code"`               // Stock代码  冗余字段
	Status            int       `xorm:"status tinyint(1) default 0" json:"status"`          // 状态: 0运行中; 1已完成
	TakeProfitPrice   float64   `xorm:"take_profit_price" json:"takeProfitPrice"`           // 止盈价格
	StopLossPrice     float64   `xorm:"stop_loss_price" json:"stopLossPrice"`               // 止损价格
	ValuationAnalysis []string  `xorm:"valuation_analysis" json:"valuationAnalysis"`        // 估值分析
	CreatedAt         time.Time `xorm:"created datetime 'created_at'" json:"createdAt"`     // 创建时间
	UpdatedAt         time.Time `xorm:"updated datetime 'updated_at'" json:"updatedAt"`     // 更新时间
	DeletedAt         time.Time `xorm:"deleted datetime 'deleted_at'" json:"-"`             // 删除时间(软删除)
}

func (TransactionPlan) TableName() string {
	return "note_transaction_plan"
}

// TransactionRecord 交易记录模型
type TransactionRecord struct {
	Id        int64     `xorm:"" json:"id"`                                     // 记录ID
	StockId   int64     `xorm:"stock_id notnull" json:"stockId"`                // 关联StockID
	PlanId    int64     `xorm:"plan_id notnull" json:"planId"`                  // 关联计划ID
	ParentId  int64     `xorm:"parent_id default 0" json:"parentId"`            // 父记录ID(用于关联交易)
	Date      time.Time `xorm:"" json:"date"`                                   // 交易日期
	Action    int       `xorm:"action notnull tinyint(1)" json:"action"`        // 操作类型: -1卖出; 1买入
	Price     float64   `xorm:"price notnull" json:"price"`                     // 交易价格
	Quantity  int64     `xorm:"quantity notnull" json:"quantity"`               // 交易数量
	Reason    string    `xorm:"reason" json:"reason"`                           // 交易原因
	CreatedAt time.Time `xorm:"created datetime 'created_at'" json:"createdAt"` // 创建时间
	UpdatedAt time.Time `xorm:"updated datetime 'updated_at'" json:"updatedAt"` // 更新时间
	DeletedAt time.Time `xorm:"deleted datetime 'deleted_at'" json:"-"`         // 删除时间(软删除)
}

func (TransactionRecord) TableName() string {
	return "note_transaction_record"
}
